﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SYMPersistencia;
using SYMModelo.Utils;
using SYMModelo.Factorias;

namespace SYMModelo.Modelo.Entidades
{
    public partial class Arbitro : IPersistibleModelo
    {
        PersistibleDB persistible;


        void IPersistibleModelo.CargarParametrosClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Dni", this.DNI);
        }


        void IPersistibleModelo.CargarParametrosNoClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Nombre", this.Nombre);
            parameters.Add("Edad", this.Edad);
            parameters.Add("Mail", this.Mail);
            parameters.Add("TelefonoParticular", this.TelefonoParticular);
            parameters.Add("TelefonoCelular", this.TelefonoCelular);
            parameters.Add("Direccion", this.Direccion);
            parameters.Add("Comentarios", this.Comentarios);
           
            if(this.Nacionalidad != null)
                parameters.Add("NacionalidadId", this.Nacionalidad.NacionalidadId);
            
            parameters.Add("Sexo", this.Sexo);
            parameters.Add("PathFoto", this.PathFoto);
            parameters.Add("OpinionArbitro", this.Opinion);
            parameters.Add("Activo", this.Activo);
        }

        void IPersistibleModelo.Cargar(HashTableNCSensitive hts)
        {
            this.DNI = long.Parse(hts["Dni"].ToString());
            this.Nombre = hts["Nombre"].ToString();
            this.Edad = int.Parse(hts["Edad"].ToString());
            this.Mail = hts["Mail"].ToString();
            this.TelefonoParticular = hts["TelefonoParticular"].ToString();
            this.TelefonoCelular = hts["TelefonoCelular"].ToString();
            this.Direccion = hts["Direccion"].ToString();
            this.Comentarios = hts["Comentarios"].ToString();
            this.Sexo = (Sexo)Enum.Parse(typeof(Sexo),hts["Sexo"].ToString());
            this.PathFoto = hts["PathFoto"].ToString();
            this.Opinion = (OpinionArbitro)Enum.Parse(typeof(OpinionArbitro),hts["OpinionArbitro"].ToString());
            this.Activo = bool.Parse(hts["Activo"].ToString());

            if(!String.IsNullOrWhiteSpace(hts["NacionalidadId"].ToString()))
                this.Nacionalidad = (Nacionalidad)((IPersistibleModelo)this).Persistible.Transaccion.Factoria<FactoriaNacionalidad>().SelectXId(hts["NacionalidadId"].ToString());
        }

        void IPersistibleModelo.AntesInsert() { }

        void IPersistibleModelo.AntesUpdate() { }

        void IPersistibleModelo.AntesDelete() { }

        void IPersistibleModelo.DespuesInsert() { }

        void IPersistibleModelo.DespuesUpdate() { }

        void IPersistibleModelo.DespuesDelete() { }

        public virtual string HashDatos
        {
            get
            {
                return
                    this.DNI.ToString() +
                    this.Nombre +
                    this.Edad +
                    this.Mail +
                    this.TelefonoParticular +
                    this.TelefonoCelular +
                    this.Direccion +
                    this.Comentarios +
                    this.Sexo +
                    this.PathFoto +
                    this.Opinion +
                    this.Activo +
                    ((this.Nacionalidad != null ) ?this.Nacionalidad.NacionalidadId.ToString() : "" );
            }
        }

        PersistibleDB IPersistibleModelo.Persistible
        {
            get
            {
                return this.persistible;
            }
            set
            {
                this.persistible = value;
            }
        }


        void IPersistible.Insert()
        {
            this.persistible.Insert();
        }

        void IPersistible.Update()
        {
            this.persistible.Update();
        }

        void IPersistible.Delete()
        {
            this.persistible.Delete();
        }

    }
}
